Найти - Пользователи
Полная версия: постоянно вылетает на разных этапах Segmentation fault
Начало » Python для новичков » постоянно вылетает на разных этапах Segmentation fault
1
superduck
юзаю это:
import thread, pycurl, StringIO, time, urllib, re
Python 2.6.2
Linux laptop 2.6.28-16-generic

в чём может быть трабла ?
Александр Кошелев
Код покажите!
superduck
вылазит почти в конце или в самом конце..
иногда не вылазит.

#! /usr/bin/env python
# -*- coding:utf-8 -*-
import thread, pycurl, StringIO, time, urllib, re

socks = open('socks.txt', 'r').readlines()
socks_count = len(socks)
check_socks_count = 0
good_socks = []
as_socks = []

socks_threads = 50 # колво потоков чека носков
if_check_socks = 1 # чекать носки?

def test_socks():
global socks, check_socks_count, good_socks, socks_count

while (len(socks) > 0):
sock = socks.pop().strip()
io = StringIO.StringIO()

curl = pycurl.Curl()
curl.setopt(pycurl.URL, 'http://ya.ru/')
curl.setopt(pycurl.CONNECTTIMEOUT, 10)
curl.setopt(pycurl.WRITEFUNCTION, io.write)
curl.setopt(pycurl.PROXY, sock)
curl.setopt(pycurl.PROXYTYPE, pycurl.PROXYTYPE_SOCKS5)
try:
curl.perform()
except pycurl.error, msg:
pass
else:
if len(io.getvalue())>100 :
good_socks.append(sock)
good = open('good_socks.txt', 'a')
good.write(sock + "\n")
good.close()

curl.close()
io.close()
check_socks_count += 1


if if_check_socks:
for i in xrange(0,socks_threads):
thread.start_new_thread(test_socks,())

while (socks_count>check_socks_count):
print 'Проверка носков: ' + str(round(check_socks_count * 100.0 / socks_count)) + '%'
time.sleep(1)
#pass

print 'Из ' + str(socks_count) + ' носков ' + str(len(good_socks)) + ' хороших'

for ss in good_socks:
as_socks.append({'sock':ss.strip(), 'status':0})
else:
for ss in socks:
if len(ss.strip()): as_socks.append({'sock':ss.strip(), 'status':0})
.зы это первое что написал в жизни на питоне, так что не судите строго код))
superduck
мб подскажет кто ?
slav0nic
import signal
signal.signal(signal.SIGPIPE, signal.SIG_IGN)
superduck
эм.. можно обьяснить что это, или хотя бы куда это впихнуть..
slav0nic
код на питоне
в начало файла

а на остальные вопросы ответит документация по pycurl и официальные примеры с комментариями, которые почему-то никто не читает
superduck
спс, я понимаю что это код на питоне ..
вставка в начало файла помогает в половине случаев .. да, Segmentation fault вылазит в меньшем кол-ве случаев, однако всё же вылазит ..

спс, пойду покурю доки по пикурлу

.зы сказал бы сразу что дело в пикурле))
superduck
всё, трабла решена..
при многопотоке надо обязательно добавлять curl.setopt(pycurl.NOSIGNAL, 1)

http://www.python-forum.org/pythonforum/viewtopic.php?f=5&t=9395
странно что раньше не наткнулся на эту запись.

http://curl.haxx.se/mail/curlpython-2005-06/0002.html

до этого не писал на потоках, а только ны пыхе.. думал что курл, он везде курл.. только не учёл потоки)
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB