[PYTHON] 파이썬에서 쓰레드 생성하기
PYTHON파이썬에서 쓰레드 생성하기
스크립트가 있고 다른 기능과 동시에 한 기능을 실행하고 싶습니다.
예제 코드 나는 보았다 :
import threading
def MyThread ( threading.thread ):
doing something........
def MyThread2 ( threading.thread ):
doing something........
MyThread().start()
MyThread2().start()
이 작업을하는 데 문제가 있습니다. 나는 이것이 클래스가 아닌 스레드 된 함수를 사용하는 것을 선호한다.
어떤 도움을 주셔서 감사합니다.
이것은 작업 스크립트입니다. 모든 도움에 감사드립니다.
class myClass():
def help(self):
os.system('./ssh.py')
def nope(self):
a = [1,2,3,4,5,6,67,78]
for i in a:
print i
sleep(1)
if __name__ == "__main__":
Yep = myClass()
thread = Thread(target = Yep.help)
thread2 = Thread(target = Yep.nope)
thread.start()
thread2.start()
thread.join()
print 'Finished'
해결법
-
==============================
1.이 작업을 수행하기 위해 Thread의 하위 클래스를 사용할 필요는 없습니다 - 아래에서 간단한 예제를 보면서 아래 게시 방법을 살펴보십시오.
이 작업을 수행하기 위해 Thread의 하위 클래스를 사용할 필요는 없습니다 - 아래에서 간단한 예제를 보면서 아래 게시 방법을 살펴보십시오.
from threading import Thread from time import sleep def threaded_function(arg): for i in range(arg): print "running" sleep(1) if __name__ == "__main__": thread = Thread(target = threaded_function, args = (10, )) thread.start() thread.join() print "thread finished...exiting"
여기서 스레드 모듈을 사용하여 일반 함수를 대상으로 호출하는 스레드를 만드는 방법을 보여줍니다. 스레드 생성자에서 필요한 인수를 어떻게 전달할 수 있는지 확인할 수 있습니다.
-
==============================
2.코드에 몇 가지 문제가 있습니다.
코드에 몇 가지 문제가 있습니다.
def MyThread ( threading.thread ):
함수로만이 작업을 수행하려면 다음 두 가지 옵션이 있습니다.
스레딩 :
import threading def MyThread1(): pass def MyThread2(): pass t1 = threading.Thread(target=MyThread1, args=[]) t2 = threading.Thread(target=MyThread2, args=[]) t1.start() t2.start()
스레드 :
import thread def MyThread1(): pass def MyThread2(): pass thread.start_new_thread(MyThread1, ()) thread.start_new_thread(MyThread2, ())
thread.start_new_thread 용 문서
-
==============================
3.다른 join ()을 추가하려고 시도했는데 효과가있는 것 같습니다. 여기에 코드가있다.
다른 join ()을 추가하려고 시도했는데 효과가있는 것 같습니다. 여기에 코드가있다.
from threading import Thread from time import sleep def function01(arg,name): for i in range(arg): print(name,'i---->',i,'\n') print (name,"arg---->",arg,'\n') sleep(1) def test01(): thread1 = Thread(target = function01, args = (10,'thread1', )) thread1.start() thread2 = Thread(target = function01, args = (10,'thread2', )) thread2.start() thread1.join() thread2.join() print ("thread finished...exiting") test01()
-
==============================
4.Thread 생성자에서 target 인수를 사용하여 run 대신 호출되는 함수를 직접 전달할 수 있습니다.
Thread 생성자에서 target 인수를 사용하여 run 대신 호출되는 함수를 직접 전달할 수 있습니다.
-
==============================
5.run () 메서드를 재정의 했습니까? __init__을 오버라이드했다면 기본 threading.Thread .__ init __ ()을 호출했는지 확인 했습니까?
run () 메서드를 재정의 했습니까? __init__을 오버라이드했다면 기본 threading.Thread .__ init __ ()을 호출했는지 확인 했습니까?
두 개의 스레드를 시작한 후에도 주 스레드는 자식 스레드가 무기한 작업을 계속하기 전에 끝나지 않도록 주 스레드가 실행을 계속할 수 있도록 자식 스레드에 대한 무기한 / 차단 / 결합을 계속 수행합니까?
마지막으로 처리되지 않은 예외가 있습니까?
from https://stackoverflow.com/questions/2905965/creating-threads-in-python by cc-by-sa and MIT license
'PYTHON' 카테고리의 다른 글
[PYTHON] 여러 키로 파이썬 사전 목록 정렬 (0) | 2018.10.09 |
---|---|
[PYTHON] 파이썬 : __getitem__에서 슬라이싱 구현하기 (0) | 2018.10.09 |
[PYTHON] float 범위에서 임의의 숫자를 가져 오는 방법은 무엇입니까? (0) | 2018.10.09 |
[PYTHON] _tkinter.TclError : 표시 이름 없음 및 $ DISPLAY 환경 변수 없음 (0) | 2018.10.09 |
[PYTHON] 파이썬 목록의 값으로 .csv 파일 만들기 (0) | 2018.10.09 |