Можно ли дублировать текущий интерактивный процесс / интерпретатор python с помощью fork? - PullRequest
0 голосов
/ 06 апреля 2019

Заранее извините за то, что не знаете правильную терминологию для этого вопроса.

Можно ли "продублировать" работающий в настоящее время интерпретатор python, а затем подключить и использовать его в интерактивном режиме?

Я вижучто-то под названием os.fork (), которое кажется многообещающим.

По сути, я представляю что-то вроде этого:

Я использую ipython, работающий в терминале на Mac.В сеансе ipython у меня есть некоторые переменные и объекты в памяти.Затем я как-то «разветвляю» процесс создания дубликата (дочерний процесс?).Я «переключаю управление» на дубликаты, в интерактивном режиме возлюсь с переменными, возможно, делаю что-то, что приводит к зависанию процесса (например, пытается выделить гигантский массив) или что-то подобное разрушительное поведение.Затем, когда я захочу, я могу убить этот дочерний процесс и вернуться к моему первоначальному переводчику.Еще лучше было бы переключаться между процессами, с которыми я сейчас взаимодействую.

Я использую многопроцессорный модуль довольно часто, когда использую интерпретатор ipython.Я знаю, что это как-то развивает текущий процесс интерпретатора.Т.е. когда вы вызываете multiprocessing.Pool (), вы получаете пул дочерних процессов, каждый из которых может видеть все объекты, которые были определены в основном процессе и находятся в памяти.Дочерние процессы могут изменять эти объекты, но когда они, в моем понимании, для них автоматически создается копия, и они изменяют копию.Таким образом, объекты основного процесса остаются нетронутыми.

...