멀티 프로세싱은 저에게 새로운 것입니다. 나는 그것에 관해 약간을 읽는다. 그러나 그것은 나를 더 혼란하게한다. 간단한 예를 들어 이해하고 싶습니다. 첫 번째 함수에 2 개의 함수가 있다고 가정 해 봅니다. 'a'변수를 증가시킨 다음 'number'변수에 할당합니다. 두 번째 함수는 첫 번째 함수를 시작하고 매 순간마다 'number'변수를 인쇄하려고합니다. 모양은 다음과 같습니다 :파이썬에서의 병렬 다중 처리 예제가 편리합니다.
global number
def what_number():
a=1
while True:
a+=1
number=a
def read_number():
while True:
--> #here I need to start 'what_number' function <--
time.sleep(1)
print(number)
if __name__ == "__main__":
read_number()
어떻게하면됩니까? 그렇게하기위한 쉽고 적절한 방법이 있습니까?
업데이트 :
나는 정말 thankfull 대답이야 noxdafox 보았다하지만 정확히 내가 원하는 없습니다. 무엇보다도 먼저 noxdafox 코드의 첫 번째 함수 ('main')에 값을 보내지 않으려 고합니다. 두 번째로 나는 모든 가치를 얻고 싶지 않으므로 퀸이 효과가 없을 것입니다. 나는 while 루프의 매 두 번째 숫자 후에 얻어야한다.
는하지만,이 블루 선택된 값이 동일해야합니다 : u는 위의 코드를 실행하면
import multiprocessing
import time
number = 0
def child_process():
global number
while True:
number += 1
print(number)
def main():
process = multiprocessing.Process(target=child_process)
process.start()
while True:
print("should get same number:",number)
time.sleep(0.001)
if __name__ == "__main__":
main()
당신이 뭔가를 얻을 : 코드는 무언가 같이해야합니다! 그게 가장 큰 문제입니다 :) 혼란
http://chriskiehl.com/article/parallelism-in-one-line/ – user45245
'global number'? – alfasin
[multiprocessing.Pool : 가능한 경우 적용, \ _async 또는 map?] 복제본 (https://stackoverflow.com/questions/8533318/multiprocessing-pool-when-to-use-apply-apply-async- 또는 – alfasin