为什么该语句在线程内不起作用? - python

该按钮正在工作,但线程根本没有工作。是什么导致它失败?
thread.start_new_thread(task1)语句未执行。

/var/tmp/p.py:

import sys,os
import pygtk, gtk, gobject
import socket, datetime, threading
import ConfigParser
import urllib2
import subprocess
import threading
import thread

# Singleton run once
import fcntl, sys
pid_file = '/var/tmp/program.pid'
fp = open(pid_file, 'w')
try:
  fcntl.lockf(fp, fcntl.LOCK_EX | fcntl.LOCK_NB)
except IOError:
  # another instance is running
  sys.exit(0)

# Read config file
server="http://blabla"
username="stackoverflow"
password="freak"
language="EN"    
# Disconnect
get_disconnect="/a/disconnectusername?username=%s&password=%s&language=%s" % (username,password,language)
disconnect_url="%s%s" % (server,get_disconnect)

# Do multi-thread without blocking the main front-end
def task1():
  urllib2.urlopen(disconnect_url)

class GTK_Main:

  def __init__(self):
    # main GTK
    self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
    self.window.set_size_request(1280, 720)
    self.window.set_border_width(10)
    self.window.set_decorated(False)
    self.window.set_title("Test")
    self.window.move(0,0)
    self.window.connect("destroy", gtk.main_quit, "WM destroy")

    hbox = gtk.HBox(False, 0)
    self.vbox.pack_start(hbox, False)    
    hbox.set_border_width(10)
    hbox.pack_start(gtk.Label(), True, True, 0)

    # Disconnect
    self.button_disconnect = gtk.Button()
    self.button_disconnect.set_name("disconnectButton")
    self.button_disconnect.connect("clicked", self.disconnectButton)    
    hbox.pack_start(self.button_disconnect, False)   

    hbox.add(gtk.Label())    
    self.window.show_all()
    self.window.set_keep_above(True)

    if(self.window.get_window().get_state() == gtk.gdk.WINDOW_STATE_MAXIMIZED):
      print "unmaximize"
      self.window.unmaximize()


  def disconnectButton(self, w):
    print "Window Resize"
    #subprocess.call("java -cp /var/tmp/dist/Audio.jar ui.Connecting1 wait..", shell=True)
    #urllib2.urlopen(disconnect_url)
    try:
      #t1 = threading.Thread(target=task1)
      #t1.start()
      thread.start_new_thread(task1)
    except:
      print "Error: threading.."

    subprocess.call("/var/tmp/runme.sh", shell=True)

try:
  GTK_Main()
  gtk.gdk.threads_init()
  gtk.main()
except (SystemExit, KeyboardInterrupt):
  sock.close()
  gtk.main_quit()

/var/tmp/runme.sh:

#!/bin/bash
export DISPLAY=:0.0
# kill please
ps aux | grep p.py | awk '{print $2}' | xargs kill -9;
sleep 2
# kill please
ps aux | grep p.py | awk '{print $2}' | xargs kill -9;
sleep 2
# kill for sure please
ps aux | grep p.py | awk '{print $2}' | xargs kill -9;
# cross finger and run now
python /var/tmp/p.py &

参考方案

这是因为

1)您正在运行多线程来爬行Web链接,但是我们链接将需要一些时间才能将数据包送回,有一段时间需要等待...

2)您立即杀死python并重新启动它,因此它杀死了线程,这表示它没有工作

3)解决此类问题的使用

  t1 = threading.Thread(target=task1)
  t1.start()
  t1.join() # this tells to wait until job is done (url crawl)

  #thread.start_new_thread(task1)

Python-crontab模块 - python

我正在尝试在Linux OS(CentOS 7)上使用Python-crontab模块我的配置文件如下:{ "ossConfigurationData": { "work1": [ { "cronInterval": "0 0 0 1 1 ?", "attribute&…

Python GPU资源利用 - python

我有一个Python脚本在某些深度学习模型上运行推理。有什么办法可以找出GPU资源的利用率水平?例如,使用着色器,float16乘法器等。我似乎在网上找不到太多有关这些GPU资源的文档。谢谢! 参考方案 您可以尝试在像Renderdoc这样的GPU分析器中运行pyxthon应用程序。它将分析您的跑步情况。您将能够获得有关已使用资源,已用缓冲区,不同渲染状态上…

Python Pandas导出数据 - python

我正在使用python pandas处理一些数据。我已使用以下代码将数据导出到excel文件。writer = pd.ExcelWriter('Data.xlsx'); wrong_data.to_excel(writer,"Names which are wrong", index = False); writer.…

Python:在不更改段落顺序的情况下在文件的每个段落中反向单词? - python

我想通过反转text_in.txt文件中的单词来生成text_out.txt文件,如下所示:text_in.txt具有两段,如下所示:Hello world, I am Here. I am eighteen years old. text_out.txt应该是这样的:Here. am I world, Hello old. years eighteen a…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…