Как правилно да разклоните дъщерен процес в twisted, който не използва нищо от twisted (но използва данни от родителския процес) (напр. да обработите „моментна снимка“ на някои данни от родителския процес и да ги запишете във файл, без блокиране)?
Изглежда, че ако направя нещо като чисто изключване в дъщерния процес след os.fork()
, това затваря някои от гнездата/дескрипторите в родителския процес; единственият начин да се избегне това, което виждам, е да се направи os.kill(os.getpid(), signal.SIGKILL)
, което наистина изглежда като лоша идея (въпреки че не е пряко проблематично).
(освен това, ако dict се промени в родителския процес, може ли да се промени и в дъщерния процес? Бързият тест обаче показва, че не се променя. ОС/ядрата са стабилни за debian / sid)
os.fork
във всяка програма на Python почти сигурно е повреден (по дизайн). Единственото изключение може да бъде, ако незабавно извикатеos.execve
(или една от подобни функции) - което изхвърля всичките ви данни, точно както правиspawnProcess
. Така че ще помогне, ако промените въпроса си от Как мога да използвамos.fork
? до Как мога да споделя данни под формата на X с друг процес? или може би дори просто отидете до Как мога да запазя данни под формата на X в програма, използваща Twisted? 02.11.2012multiprocessing
) и може да се използва за обработка, например, на големи масиви numpy с код на Python на множество ядра, без да ги дублира в паметта. И може да се използва по OP начин доста добре, но се опитвам да разбера как да направя това по-добре. 02.11.2012numpy.memmap
docs.scipy.org/doc/numpy/reference/generated/ 07.11.2012fork()
може да се обърка, вероятно е семестриален колежански курс от 300 нива по операционни системи, но аз добавих кратко резюме на някои от проблемите към отговорете така, че това да не е просто сляп аргумент от авторитета. 21.06.2019