小编pra*_*nsg的帖子

python聊天客户端库

我正在尝试编写一个Python库,它将实现某个聊天协议的客户端.

连接到服务器后,
我启动主循环,从服务器读取并处理收到的命令,这里我需要调用回调函数(如on_messageon file_received等).

我应该怎么做呢?
应该为每个回调函数启动一个新线程吗?也许一些回调需要一些时间才能返回,我会暂停.
另外,
如果我从服务器读取的主循环在一个线程中,我可以从另一个线程写入套接字(向服务器发送消息)吗?
还是有更好的方法?谢谢.

python multithreading chat

0
推荐指数
1
解决办法
466
查看次数

在python中的两个线程之间共享一个变量

我想在解释器中使用原子操作在两个线程之间共享一个变量,如http://effbot.org/zone/thread-synchronization.htm所述.核心数据类型的简单赋值(单字节码操作)应该是线程安全的,因为python <3.2中的GIL.到目前为止理论.以下代码可以在主模式或从模式下运行(-m或-s).主模式通过UDP不断发送数据.从模式确实创建了一个线程来从udp端口读取数据并更新每个接收到的数据包上的变量.

示例代码将共享变量作为参数传递给创建时的线程.我也尝试过使用全局变量或将线程本地存储传递给线程.

结果是一样的.在read_time_master线程内部,变量被赋值.但是在主线程中,共享变量的值不会更新.

#!/usr/bin/env python

import socket
import itertools
import multiprocessing
from optparse import OptionParser
from time import sleep

PORT = 1666

def read_time_master(sock, time_master):
   while True:
     time_master = float(sock.recvfrom(1024)[0])

def main():
    time_master = 0.0
    p = OptionParser()
    p.add_option('--master', '-m', action='store_true')
    p.add_option('--slave', '-s', action='store_true')
    options, arguments = p.parse_args()
    if options.master or options.slave:
        sock = socket.socket(socket.AF_INET, socket.SOCK_DGRAM, 0)
    if options.master:
        sock.connect(('127.0.0.1', PORT))
    if options.slave:
        sock.bind(('0.0.0.0', PORT))
        recv_thread = multiprocessing.Process(target=read_time_master, args=(sock, time_master))
        recv_thread.start()

    for time in itertools.count():
        print time …
Run Code Online (Sandbox Code Playgroud)

python multithreading

0
推荐指数
1
解决办法
5724
查看次数

怎么能让我的对象停止?

我可以让我的物体停下来.一旦我按下w,a,s或d它就会移动但不会停止.当我按下其中一个方向时它会移动但它不会停止.当我释放钥匙时,我需要它停止.所有类型的帮助将不胜感激.继承我的代码:

while (running == 1):
    screen.fill(white)
    for event in pygame.event.get():
        if (event.type == pygame.QUIT):
            running = 0
        elif (event.type == pygame.KEYDOWN):
            if (event.key == pygame.K_d):
                dir = "R"
            elif (event.key == pygame.K_a):
                dir = "L"
            elif (event.key == pygame.K_s):
                dir = "D"
            elif (event.key == pygame.K_w):
                dir = "U"
            elif (event.key == pygame.K_ESCAPE): 
                sys.exit(0)
            elif (event.key == pygame.K_SPACE):
                shot=True
                xbul=xgun
                ybul=ygun
            #if key[K_SPACE]:
                #shot = True


    #OBJECT'S MOVEMENTS
    if (dir == "R" and xgun<595):
        xgun = xgun + 3
        pygame.event.wait …
Run Code Online (Sandbox Code Playgroud)

python pygame

0
推荐指数
1
解决办法
281
查看次数

Python解释器行为?

我使用的是Python 2.7.

这就是发生的事情:

>>> 2+++2
4
Run Code Online (Sandbox Code Playgroud)

我不确定python解释器如何解释这个表达式.

我能想出的唯一原因是在第一个"+"之后的连续"+"被认为是一元运算符而第一个"+"被认为是二元运算符,但实际上正在发生的机制我不是肯定.

我希望有人能够根据Python编程语言的语法细节来回答这个问题,并报告其他一些含糊不清的表达方式.我想出了下面列出的一些其他表达式(结果):

>>> 2------------2
4
>>> 2+-2+-2+-2+-2+-2-------------------------2
-10
Run Code Online (Sandbox Code Playgroud)

python python-2.7

0
推荐指数
1
解决办法
107
查看次数

基本的Pygame图形

我刚开始学习pygame图形.我在pygame中画了一个圆圈,想知道我是如何编程来改变颜色的.
例如:它将颜色从蓝色更改为红色.

我需要它来改变颜色,直到我关闭pygame,如果颜色逐渐从一个变为另一个而不是瞬间改变,那将会很好吗?我有什么想法可以做到这一点?

import pygame
pygame.init()

RED =   (255,  0,  0)
BLUE =  (  0,  0,255)
BLACK = (  0,  0,  0)
SIZE = (1000,1000)
screen = pygame.display.set_mode(SIZE)

pygame.draw.circle(screen,RED,(500,500),200)

pygame.display.flip()
pygame.time.wait(3000)
pygame.quit()
Run Code Online (Sandbox Code Playgroud)

python

0
推荐指数
1
解决办法
704
查看次数

BeautifulSoup - str(汤)与给出的html不同

>>> from bs4 import BeautifulSoup as bs
>>> html = """<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b><\p>
<p><b>para2</b><\p>
</body>
</html>"""
>>> 
>>> soup = bs(html)
>>> html == str(soup)
False
>>> print html
<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b><\p>
<p><b>para2</b><\p>
</body>
</html>
>>> print soup
<html>
<head><title>Test</title></head>
<body>
<p><b>para1</b>&lt;\p&gt;
<p><b>para2</b>&lt;\p&gt;
</p></p></body>
</html>
Run Code Online (Sandbox Code Playgroud)

正如你所看到的,htmlstr(soup)... 之间存在差异.

< became &lt;
> became &gt;
Run Code Online (Sandbox Code Playgroud)

为什么会这样?

html python string beautifulsoup

-1
推荐指数
1
解决办法
243
查看次数