導航:首頁 > 編程語言 > pythondefrunself

pythondefrunself

發布時間:2023-08-28 09:51:19

『壹』 python暫停和恢復無限循環

importthreading
importtime
classA():
aa=""

classtt(threading.Thread):
def__init__(self):
threading.Thread.__init__(self)
defrun(self):
whileTrue:
a.aa=raw_input('enter:')
ifa.aa=='Q':
break
defmain():
my_t=tt()
my_t.start()
whileTrue:
ifa.aa=="A":
continue
elifa.aa=="Q":
break
else:
print('hello',a.aa)
time.sleep(1)
a=A()
main()

『貳』 python怎麼讓進程暫停

您的意思是要將進程掛起(Suspend) 而非 阻塞(Block)
如果用sleep() 進程將阻塞
假設進程下有兩個線程 那麼這兩個線程會繼續運行
要使進程掛起 可以考慮使用psutil
import psutil
p = psutil.Process(pid)
p.suspend() #掛起進程
p.resume() #恢復進程

為了證明效果 我寫了一個簡單的進程Process
其下有兩個線程 讀者Reader 和 寫者Writer(簡單的讀者寫者問題)

Process:
import threading

from time import ctime, sleep
import ThreadInReadAndWriteProblem
import multiprocessing
import os

class Process(multiprocessing.Process):

def __init__(self):
multiprocessing.Process.__init__(self) #手動實現父類
pid = os.getpid()

def run(self):
print '當前運行進程PID : %s ' %self.pid #子線程的id與父進程的pid相同 屬於 同一個進程

for i in range(0,5):
r = ThreadInReadAndWriteProblem.Reader()
w = ThreadInReadAndWriteProblem.Writer()
w.start()
r.start()

print '進程阻塞'
sleep(10) #總共運行時間10秒

Reader&Writer
import threading
from time import ctime, sleep
import os

mutex = threading.Lock() #互斥鎖
mutex_readercount = threading.Lock() #計數時的互斥 計算當前正在讀的數目
readerCount = 0 number = 0

#不滿足條件的 進入阻塞狀態

class Reader(threading.Thread): #讀者
def __init__(self):
threading.Thread.__init__(self) #繼承父類構造函數

def run(self):
global mutex
global readerCount
#print '線程PID: %s ' %os.getpid()
while True:
mutex_readercount.acquire()
readerCount +=1
if readerCount == 1:
print '讀者進程等待中,編號%s' %(self.name)
mutex.acquire() == False # 第一個需要申請

mutex_readercount.release()
print '開始讀 , 讀者編號 %s ,現在時間是 %s' %(self.name,ctime())
sleep(2)
print '完成讀 , 讀者編號 %s , 現在時間是 %s' %(self.name,ctime())

mutex_readercount.acquire()
readerCount -= 1
if readerCount == 0: #所有讀者均完成
print '最後一個讀者完成讀 '
mutex.release()
mutex_readercount.release()

class Writer(threading.Thread): #寫者
def __init__(self):
threading.Thread.__init__(self)

def run(self):
global mutex
global writerCount
#print '線程PID: %s' %os.getpid()
while True:
print '寫者進程等待中 編號: %s' %(self.name)
mutex.acquire()
print '開始寫 編號:%s 現在時間是: %s ' %(self.name,ctime())
sleep(5)
print '結束寫 編號: %s 現在時間是 %s' %(self.name,ctime())
mutex.release()

測試程序
import ThreadInReadAndWriteProblem
import
import psutil
import Scheler
from time import ctime, sleep

def main():
p = .Process()
p.start()

sleep(3)

stop(p.pid)
print '進程掛起 %s' %ctime()
sleep(5)

wake(p.pid)
print '喚醒進程 %s' %ctime()

def stop(pid):
print '進程暫停 進程編號 %s ' %(pid)
p = psutil.Process(pid)
p.suspend()

def wake(pid):
print '進程恢復 進程編號 %s ' %(pid)
p = psutil.Process(pid)
p.resume()

if __name__ == '__main__':
main()

結果:
當前運行進程PID : 3096
寫者進程等待中 編號: Thread-2
開始寫 編號:Thread-2 現在時間是: Mon Nov 30 21:12:12 2015
讀者進程等待中,編號Thread-1
寫者進程等待中 編號: Thread-4
進程阻塞
寫者進程等待中 編號: Thread-6
寫者進程等待中 編號: Thread-8
寫者進程等待中 編號: Thread-10
進程暫停 進程編號 3096
進程掛起 Mon Nov 30 21:12:15 2015
進程恢復 進程編號 3096
喚醒進程 Mon Nov 30 21:12:20 2015
結束寫 編號: Thread-2 現在時間是 Mon Nov 30 21:12:20 2015
寫者進程等待中 編號: Thread-2
開始讀 , 讀者編號 Thread-1 ,現在時間是 Mon Nov 30 21:12:20 2015

開始讀 , 讀者編號 Thread-3 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-5 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-7 ,現在時間是 Mon Nov 30 21:12:20 2015
開始讀 , 讀者編號 Thread-9 ,現在時間是 Mon Nov 30 21:12:20 2015
完成讀 , 讀者編號 Thread-1 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-3 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-5 , 現在時間是 Mon Nov 30 21:12:22 2015
完成讀 , 讀者編號 Thread-7 , 現在時間是 Mon Nov 30 21:12:22 2015

『叄』 弱問python的問題.怎麼終止一個子線程

等待串口數據導致線程自己sleep而沒有機會執行,主線程的join沒法繼續,方法就是這樣的,換成這個能執行

fromthreadingimport*
importtime

classMyThread(Thread):
defrun(self):
self.ifdo=True;
whileself.ifdo:
print'Iamrunning...'
time.sleep(0.1)

defstop(self):
print'Iwillstopit...'
self.ifdo=False;

tr=MyThread()
tr.setDaemon(True)
tr.start()
time.sleep(1)
tr.stop()
tr.join()

這樣就更直觀了

fromthreadingimport*
importtime

classMyThread(Thread):
defrun(self):
self.ifdo=True;
whileself.ifdo:
print'Iamrunning...'
time.sleep(2)

defstop(self):
print'Iamstoppingit...'
self.ifdo=False;

tr=MyThread()
tr.setDaemon(True)
tr.start()
print'Iwillstopit...'
time.sleep(5)
tr.stop()
tr.join()

『肆』 python這個代碼沒輸出,沒報錯,怎麼改

要使用線程:

要麼定義一個類繼承threading.Thread,重寫run方法;

要麼創建一個threading.Thread類的對象,將你要線程執行的函數指定為target參數野攜。

你這里定義了類ThreadClass,但沒繼承threading.Thread類,又指定了target,但指定的是一個類不是一個函數,所以沒輸出。

非要這樣搞,可以改成這樣:

import threading

class ThreadClass:

def __init__(self,num): self.num = num

def run(self):

print("this is def ",self.num)

n=['a','b','c','d','e']

lis=[]

for i in n:

th = threading.Thread(target=ThreadClass.run,args=(ThreadClass(i),))

lis.append(th)

for t in lis:

t.start()

for t in lis:

t.join()

縮進格式見圖:

『伍』 python如何實現程序定時執行的功能

sleep就可以吧,把程序作為一個線程,啟動線程,裡面加個sleep,示例如下:x0dx0aimport threadingx0dx0aimport timex0dx0aclass Test(threading.Thread):x0dx0a def __init__(self):x0dx0a passx0dx0a x0dx0a def test(self):x0dx0a print 'run test!'x0dx0a x0dx0a def run(self):x0dx0a while True:x0dx0a print time.strftime('%Y-%m-%d %H:%M:%S')x0dx0a self.test()x0dx0a time.sleep(5)x0dx0a#test...x0dx0aa=Test()x0dx0aa.run()x0dx0a#...test

『陸』 Python里如何終止一個線程

Python用sleep停止一個線程的運行,而不影響主線程的運行,案例代碼如下:

fromthreadingimport*
importtime

classMyThread(Thread):
defrun(self):
self.ifdo=True;
whileself.ifdo:
print'Iamrunning...'
time.sleep(2)

defstop(self):
print'Iamstoppingit...'
self.ifdo=False;

tr=MyThread()
tr.setDaemon(True)
tr.start()
print'Iwillstopit...'
time.sleep(5)
tr.stop()
tr.join()

『柒』 Python編程求,謝謝各位救救

大概的框架就是這樣,具體你再去根據題目修改。

閱讀全文

與pythondefrunself相關的資料

熱點內容
按摩解壓腿部足部 瀏覽:291
app切圖用什麼軟體 瀏覽:3
訂購命令英語 瀏覽:659
java正則網址 瀏覽:777
程序員上班可不可以自學 瀏覽:428
空調壓縮機排空氣視頻 瀏覽:283
centos72nginxphp 瀏覽:184
游戲平台用什麼伺服器好 瀏覽:753
保密櫃里的圖片是加密文件嗎 瀏覽:909
php判斷最後一個字元 瀏覽:635
pdf腦區 瀏覽:635
at命令已棄用 瀏覽:490
買點賣出指標源碼 瀏覽:612
36位單片機 瀏覽:428
英雄聯盟山東伺服器地址 瀏覽:214
sd伺服器什麼意思 瀏覽:619
thinkphp去indexphp 瀏覽:63
電腦顯示連接未加密 瀏覽:195
zao伺服器怎麼修改 瀏覽:246
php使用jsapi調起支付 瀏覽:892